Masterarbeit Richard Stern. Flutter App, sich mit einem Bluetooth-Gerät verbindet und Berührungen auf einem Sensor visualisiert.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

build.html 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <meta name="description" content="API docs for the build method from the Sensor class, for the Dart programming language.">
  8. <title>build method - Sensor class - uiComponents library - Dart API</title>
  9. <!-- required because all the links are pseudo-absolute -->
  10. <base href="../..">
  11. <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:500,400i,400,300|Source+Sans+Pro:400,300,700" rel="stylesheet">
  12. <link rel="stylesheet" href="static-assets/github.css">
  13. <link rel="stylesheet" href="static-assets/styles.css">
  14. <link rel="icon" href="static-assets/favicon.png">
  15. </head>
  16. <body>
  17. <div id="overlay-under-drawer"></div>
  18. <header id="title">
  19. <button id="sidenav-left-toggle" type="button">&nbsp;</button>
  20. <ol class="breadcrumbs gt-separated dark hidden-xs">
  21. <li><a href="index.html">touch_demonstrator</a></li>
  22. <li><a href="ui_home_uiComponents/ui_home_uiComponents-library.html">uiComponents</a></li>
  23. <li><a href="ui_home_uiComponents/Sensor-class.html">Sensor</a></li>
  24. <li class="self-crumb">build method</li>
  25. </ol>
  26. <div class="self-name">build</div>
  27. <form class="search navbar-right" role="search">
  28. <input type="text" id="search-box" autocomplete="off" disabled class="form-control typeahead" placeholder="Loading search...">
  29. </form>
  30. </header>
  31. <main>
  32. <div class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left">
  33. <h5>Sensor class</h5>
  34. <ol>
  35. <li class="section-title"><a href="ui_home_uiComponents/Sensor-class.html#constructors">Constructors</a></li>
  36. <li><a href="ui_home_uiComponents/Sensor/Sensor.html">Sensor</a></li>
  37. <li class="section-title inherited">
  38. <a href="ui_home_uiComponents/Sensor-class.html#instance-properties">Properties</a>
  39. </li>
  40. <li class="inherited"><a href="ui_home_uiComponents/Sensor/hashCode.html">hashCode</a></li>
  41. <li class="inherited"><a href="ui_home_uiComponents/Sensor/key.html">key</a></li>
  42. <li class="inherited"><a href="ui_home_uiComponents/Sensor/runtimeType.html">runtimeType</a></li>
  43. <li class="section-title"><a href="ui_home_uiComponents/Sensor-class.html#instance-methods">Methods</a></li>
  44. <li><a href="ui_home_uiComponents/Sensor/build.html">build</a></li>
  45. <li class="inherited"><a href="ui_home_uiComponents/Sensor/createElement.html">createElement</a></li>
  46. <li class="inherited"><a href="ui_home_uiComponents/Sensor/debugDescribeChildren.html">debugDescribeChildren</a></li>
  47. <li class="inherited"><a href="ui_home_uiComponents/Sensor/debugFillProperties.html">debugFillProperties</a></li>
  48. <li class="inherited"><a href="ui_home_uiComponents/Sensor/noSuchMethod.html">noSuchMethod</a></li>
  49. <li class="inherited"><a href="ui_home_uiComponents/Sensor/toDiagnosticsNode.html">toDiagnosticsNode</a></li>
  50. <li class="inherited"><a href="ui_home_uiComponents/Sensor/toString.html">toString</a></li>
  51. <li class="inherited"><a href="ui_home_uiComponents/Sensor/toStringDeep.html">toStringDeep</a></li>
  52. <li class="inherited"><a href="ui_home_uiComponents/Sensor/toStringShallow.html">toStringShallow</a></li>
  53. <li class="inherited"><a href="ui_home_uiComponents/Sensor/toStringShort.html">toStringShort</a></li>
  54. <li class="section-title inherited"><a href="ui_home_uiComponents/Sensor-class.html#operators">Operators</a></li>
  55. <li class="inherited"><a href="ui_home_uiComponents/Sensor/operator_equals.html">operator ==</a></li>
  56. </ol>
  57. </div><!--/.sidebar-offcanvas-->
  58. <div class="col-xs-12 col-sm-9 col-md-8 main-content">
  59. <h1>build method</h1>
  60. <section class="multi-line-signature">
  61. <div>
  62. <ol class="annotation-list">
  63. <li>@override</li>
  64. </ol>
  65. </div>
  66. <span class="returntype">Widget</span>
  67. <span class="name ">build</span>
  68. (<wbr><span class="parameter" id="build-param-context"><span class="type-annotation">BuildContext</span> <span class="parameter-name">context</span></span>)
  69. </section>
  70. <section class="desc markdown">
  71. <p>Describes the part of the user interface represented by this widget.</p>
  72. <p>The framework calls this method when this widget is inserted into the
  73. tree in a given <code>BuildContext</code> and when the dependencies of this widget
  74. change (e.g., an <code>InheritedWidget</code> referenced by this widget changes).</p>
  75. <p>The framework replaces the subtree below this widget with the widget
  76. returned by this method, either by updating the existing subtree or by
  77. removing the subtree and inflating a new subtree, depending on whether the
  78. widget returned by this method can update the root of the existing
  79. subtree, as determined by calling <code>Widget.canUpdate</code>.</p>
  80. <p>Typically implementations return a newly created constellation of widgets
  81. that are configured with information from this widget's constructor and
  82. from the given <code>BuildContext</code>.</p>
  83. <p>The given <code>BuildContext</code> contains information about the location in the
  84. tree at which this widget is being built. For example, the context
  85. provides the set of inherited widgets for this location in the tree. A
  86. given widget might be built with multiple different <code>BuildContext</code>
  87. arguments over time if the widget is moved around the tree or if the
  88. widget is inserted into the tree in multiple places at once.</p>
  89. <p>The implementation of this method must only depend on:</p><ul><li>the fields of the widget, which themselves must not change over time,
  90. and</li><li>any ambient state obtained from the <code>context</code> using
  91. <code>BuildContext.inheritFromWidgetOfExactType</code>.</li></ul>
  92. <p>If a widget's <a href="ui_home_uiComponents/Sensor/build.html">build</a> method is to depend on anything else, use a
  93. <code>StatefulWidget</code> instead.</p>
  94. <p>See also:</p><ul><li>The discussion on performance considerations at <code>StatelessWidget</code>.</li></ul>
  95. </section>
  96. <section class="summary source-code" id="source">
  97. <h2><span>Implementation</span> </h2>
  98. <pre class="language-dart"><code class="language-dart">@override
  99. Widget build(BuildContext context) {
  100. final bBloc = BlocProvider.of(context).bluetoothBlocGetter;
  101. final widthOfScreen = MediaQuery.of(context).size.width;
  102. final heightOfScreen = MediaQuery.of(context).size.height;
  103. double _heightSensor;
  104. double _widthSensor;
  105. print(&#39;HoS: $heightOfScreen WoS: $widthOfScreen&#39;);
  106. if (heightOfScreen &gt; widthOfScreen) {
  107. print(&#39;Hochformat&#39;);
  108. _widthSensor = widthOfScreen * 0.8;
  109. _heightSensor = _widthSensor;
  110. } else {
  111. print(&#39;Querformat&#39;);
  112. _heightSensor = heightOfScreen * 0.8;
  113. _widthSensor = _heightSensor;
  114. print(&#39;HS: $_heightSensor WS: $_widthSensor&#39;);
  115. }
  116. return Hero(
  117. tag: &#39;touchpadHero&#39;,
  118. child: Container(
  119. decoration: BoxDecoration(
  120. image: DecorationImage(
  121. image: ExactAssetImage(&#39;assets&#47;trackpad.png&#39;), fit: BoxFit.cover),
  122. ),
  123. margin: EdgeInsets.only(left: 10.0, right: 10.0),
  124. height: _heightSensor,
  125. width: _widthSensor,
  126. child: Stack(
  127. children: &lt;Widget&gt;[
  128. StreamBuilder&lt;List&lt;bool&gt;&gt;(
  129. stream: bBloc.getButtons$,
  130. initialData: [false, false, false],
  131. builder:
  132. (BuildContext context, AsyncSnapshot&lt;List&lt;bool&gt;&gt; snapshot) {
  133. if (snapshot.hasData) {
  134. print(&#39;GETBUTTONS: ${snapshot.data}&#39;);
  135. return Stack(
  136. &#47;&#47; draw the buttons
  137. children: &lt;Widget&gt;[
  138. (snapshot.data[0])
  139. ? Positioned(
  140. left: 14.0,
  141. bottom: 215.0,
  142. child: new Icon(
  143. Icons.fingerprint,
  144. color: Colors.white,
  145. size: 40.0,
  146. ),
  147. )
  148. : Container(),
  149. (snapshot.data[1])
  150. ? Positioned(
  151. left: 14.0,
  152. bottom: 163.0,
  153. child: new Icon(
  154. Icons.fingerprint,
  155. color: Colors.white,
  156. size: 40.0,
  157. ),
  158. )
  159. : Container(),
  160. (snapshot.data[2])
  161. ? Positioned(
  162. left: 14.0,
  163. bottom: 110.0,
  164. child: new Icon(
  165. Icons.fingerprint,
  166. color: Colors.white,
  167. size: 40.0,
  168. ),
  169. )
  170. : Container(),
  171. ],
  172. );
  173. }
  174. &#47;&#47; else return Container();
  175. }),
  176. StreamBuilder&lt;bool&gt;(
  177. stream: bBloc.isConnected$,
  178. initialData: false,
  179. builder: (BuildContext context, AsyncSnapshot&lt;bool&gt; snapshot) {
  180. if (snapshot.hasData) {
  181. if (snapshot.data) {
  182. &#47;&#47; _showInSnackBar(&#39;Connected&#39;);
  183. return SuccessAnimation();
  184. } else {
  185. return Container();
  186. }
  187. }
  188. return Container();
  189. }),
  190. StreamBuilder&lt;Map&lt;TouchData, Color&gt;&gt;(
  191. stream: bBloc.getTouchesToVisualise$,
  192. initialData: {TouchData(5, 0, 1200, 1200): Colors.black38},
  193. builder: (BuildContext context,
  194. AsyncSnapshot&lt;Map&lt;TouchData, Color&gt;&gt; snapshot) {
  195. if (snapshot.hasData) {
  196. print(&#39;Touchpainter&#39;);
  197. return Container(
  198. height: _heightSensor,
  199. width: _widthSensor,
  200. child: CustomPaint(
  201. foregroundPainter: TouchPainter(context, snapshot.data),
  202. ),
  203. );
  204. }
  205. }),
  206. ],
  207. ),
  208. ),
  209. );
  210. }</code></pre>
  211. </section>
  212. </div> <!-- /.main-content -->
  213. <div class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
  214. </div><!--/.sidebar-offcanvas-->
  215. </main>
  216. <footer>
  217. <span class="no-break">
  218. touch_demonstrator 1.0.0+1
  219. </span>
  220. </footer>
  221. <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  222. <script src="static-assets/typeahead.bundle.min.js"></script>
  223. <script src="static-assets/highlight.pack.js"></script>
  224. <script src="static-assets/URI.js"></script>
  225. <script src="static-assets/script.js"></script>
  226. </body>
  227. </html>