<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Sample app</title> <script src="packages/web_components/platform.js"></script> <script src="packages/web_components/dart_support.js"></script> <script src='https://cdn.firebase.com/js/client/1.1.1/firebase.js'></script> </head> <body> <h1>Firebase chat</h1> <div id='messagesDiv'></div> <input type='text' id='nameInput' placeholder='Name'> <input type='text' id='messageInput' placeholder='Message'> <script type="application/dart" src="firebase_chat.dart"></script> <script src="packages/browser/dart.js"></script> </body> </html>
import 'dart:html'; import 'dart:js'; InputElement messageInput; InputElement nameInput; DivElement div; JsObject myDataRef; main() { myDataRef = new JsObject(context['Firebase'], ['https://ihp8plr13um.firebaseio-demo.com/']); // JS Firebase, JS messageInput = querySelector('#messageInput') as InputElement; // HTML Dart nameInput = querySelector('#nameInput') as InputElement; // HTML Dart div = querySelector('#messagesDiv') as DivElement; // HTML Dart messageInput.onKeyPress.listen(onMessageInputKeyPress); // onKeyPress myDataRef.callMethod('on', ['child_added', // JS .on('child_added', //new JsFunction.withThis((jsThis, a, b) { // JS - CallBack (a, b) { var message = a.callMethod('val',[]); // JS .val() print(message['name'] + ':' + message['text']); displayChatMessage(message['name'], message['text']); } ]); } void onMessageInputKeyPress(KeyboardEvent e){ if (e.keyCode == 13) { var name = nameInput.value; var text = messageInput.value; var jsParams = new JsObject.jsify( {'name' : '$name', 'text' : '$text'}); // JS myDataRef.callMethod( 'push', [jsParams]); // JS .push( messageInput.value =''; }; } void displayChatMessage(String name, String text) { div.appendHtml('<em>$name:</em> $text<br />'); }
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Sample app</title> <!-- include the web_components polyfills with support for Dart. --> <script src="packages/web_components/platform.js"></script> <link rel="import" href="fc_polymer_output_div.html"> <link rel="import" href="fc_polymer_input_fields.html"> </head> <body> <h1>Firebase chat</h1> <fc-polymer-output-div fb_dblink ='https://ihp8plr13um.firebaseio-demo.com/'></fc-polymer-output-div> <fc-polymer-input-fields fb_dblink ='https://ihp8plr13um.firebaseio-demo.com/'></fc-polymer-input-fields> <!-- bootstrap polymer --> <script type="application/dart">export 'package:polymer/init.dart';</script> <script src="packages/browser/dart.js"></script> </body> </html>
<script src='https://cdn.firebase.com/js/client/1.1.1/firebase.js'></script> <!-- import polymer-element's definition --> <link rel="import" href="packages/polymer/polymer.html"> <polymer-element name="fc-polymer-output-div" attributes="fb_dblink"> <template> <style> </style> <div id=messagesDiv></div> </template> <script type="application/dart" src="fc_polymer_output_div.dart"></script> </polymer-element>
import 'dart:html'; import 'package:polymer/polymer.dart'; import 'dart:js'; DivElement div; JsObject myDataRef; @CustomTag('fc-polymer-output-div') class OutputDivElement extends PolymerElement { @published String fb_dblink; OutputDivElement.created() : super.created() {} void attached() { super.attached(); myDataRef = new JsObject(context['Firebase'], [fb_dblink]); // JS Firebase JS div = $['messagesDiv'] as DivElement; // HTML Polymer Dart myDataRef.callMethod('on', ['child_added', // JS .on('child_added', new JsFunction.withThis((jsThis, a, b) { // JS - CallBack var message = a.callMethod('val',[]); // JS .val() print(message['name'] + ':' + message['text']); displayChatMessage(message['name'], message['text']); }) ]); } void displayChatMessage(String name, String text) { div.appendHtml('<em>$name:</em> $text<br />'); } }
<script src='https://cdn.firebase.com/js/client/1.1.1/firebase.js'></script> <!-- import polymer-element's definition --> <link rel="import" href="packages/polymer/polymer.html"> <polymer-element name="fc-polymer-input-fields" attributes="fb_dblink"> <template> <style> </style> <div> <input type='text' id='nameInput' placeholder='Name'> <input type='text' id='messageInput' placeholder='Message'> </div> </template> <script type="application/dart" src="fc_polymer_input_fields.dart"></script> </polymer-element>
import 'dart:html'; import 'package:polymer/polymer.dart'; import 'dart:js'; InputElement messageInput; InputElement nameInput; JsObject myDataRef; @CustomTag('fc-polymer-input-fields') class InputFieldsElement extends PolymerElement { @published String fb_dblink; InputFieldsElement.created() : super.created() {} void attached() { super.attached(); myDataRef = new JsObject(context['Firebase'], [fb_dblink]); // JS Firebase JS messageInput = $['messageInput'] as InputElement; // HTML Polymer Dart nameInput = $['nameInput'] as InputElement; // HTML Polymer Dart messageInput.onKeyPress.listen(onMessageInputKeyPress); // onKeyPress } void onMessageInputKeyPress(KeyboardEvent e){ if (e.keyCode == 13) { var name = nameInput.value; var text = messageInput.value; var jsParams = new JsObject.jsify( {'name' : '$name', 'text' : '$text'}); // JS myDataRef.callMethod( 'push', [jsParams]); // JS .push( messageInput.value =''; }; } }
pubspec.yaml name: Firebase_chat description: A sample Polymer Firebase app dependencies: browser: any polymer: any transformers: - polymer: entry_points: web/firebase_chat.html
Source: https://habr.com/ru/post/244219/
All Articles