Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. import 'package:flutter/material.dart';
  2. import 'func.dart';
  3.  
  4. class Message {
  5. Message(this.text, this.isMe);
  6.  
  7. String text;
  8. bool isMe;
  9. }
  10.  
  11. class Bubble extends StatelessWidget {
  12. Bubble({this.message, this.isMe});
  13.  
  14. final String message;
  15. final bool isMe;
  16.  
  17. @override
  18. Widget build(BuildContext context) {
  19. final bg = isMe ? Colors.lightBlue : Colors.greenAccent.shade200;
  20. final align = isMe ? CrossAxisAlignment.start : CrossAxisAlignment.end;
  21. final radius = BorderRadius.only(
  22. topRight: Radius.circular(isMe ? 5.0 : 0),
  23. topLeft: Radius.circular(isMe ? 0 : 5.0),
  24. bottomLeft: Radius.circular(isMe ? 10.0 : 5.0),
  25. bottomRight: Radius.circular(5.0),
  26. );
  27.  
  28. return Column(
  29. crossAxisAlignment: align,
  30. children: <Widget>[
  31. Container(
  32. margin: const EdgeInsets.all(3.0),
  33. padding: const EdgeInsets.all(8.0),
  34. decoration: BoxDecoration(
  35. color: bg,
  36. borderRadius: radius,
  37. ),
  38. child: Stack(
  39. children: <Widget>[
  40. Padding(
  41. padding: EdgeInsets.only(right: 48.0),
  42. child: Text(
  43. message,
  44. style: TextStyle(
  45. fontSize: 20.0,
  46. ),
  47. )),
  48. ],
  49. ))
  50. ],
  51. );
  52. }
  53. }
  54.  
  55. class Dialogue extends StatelessWidget {
  56. Dialogue({this.messages});
  57.  
  58. final Stream<Message> messages;
  59.  
  60. @override
  61. Widget build(BuildContext context) {
  62. return StreamBuilder(
  63. stream: aggregate(messages),
  64. builder: (BuildContext context, AsyncSnapshot snapshot) {
  65. if (snapshot.hasError) {
  66. return Text("Dialogue stream failure :(");
  67. } else {
  68. final msgs = snapshot.data as List<Message>;
  69. return Column(
  70. crossAxisAlignment: CrossAxisAlignment.stretch,
  71. children: msgs
  72. .map((msg) => Bubble(
  73. message: msg.text,
  74. isMe: msg.isMe,
  75. ))
  76. .toList());
  77. }
  78. },
  79. );
  80. }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement