Guest User

Untitled

a guest
Jan 17th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. import 'dart:async';
  2. import 'dart:typed_data';
  3.  
  4. import 'package:flutter/material.dart';
  5. import 'dart:ui' as ui;
  6.  
  7. void main() => runApp(MyApp());
  8.  
  9. int xorshift32(int x) {
  10. x ^= x << 13;
  11. x ^= x >> 17;
  12. x ^= x << 5;
  13. return x;
  14. }
  15.  
  16. int seed = 0xDEADBEEF;
  17.  
  18. const kImageDimension = 1024;
  19.  
  20. Future<ui.Image> makeImage() {
  21. final c = Completer<ui.Image>();
  22. final pixels = Int32List(kImageDimension * kImageDimension);
  23. for (int i = 0; i < pixels.length; i++) {
  24. seed = pixels[i] = xorshift32(seed);
  25. }
  26. ui.decodeImageFromPixels(
  27. pixels.buffer.asUint8List(),
  28. kImageDimension,
  29. kImageDimension,
  30. ui.PixelFormat.rgba8888,
  31. c.complete,
  32. );
  33. return c.future;
  34. }
  35.  
  36. class MyApp extends StatelessWidget {
  37. @override
  38. Widget build(BuildContext context) {
  39. return MaterialApp(
  40. title: 'Flutter Demo',
  41. theme: ThemeData(
  42. primarySwatch: Colors.blue,
  43. ),
  44. home: MyHomePage(title: 'Flutter Demo Home Page'),
  45. );
  46. }
  47. }
  48.  
  49. class MyHomePage extends StatefulWidget {
  50. MyHomePage({Key key, this.title}) : super(key: key);
  51. final String title;
  52.  
  53. @override
  54. _MyHomePageState createState() => _MyHomePageState();
  55. }
  56.  
  57. class _MyHomePageState extends State<MyHomePage> {
  58. @override
  59. Widget build(BuildContext context) {
  60. return Scaffold(
  61. appBar: AppBar(
  62. title: Text(widget.title),
  63. ),
  64. body: GridView.builder(
  65. gridDelegate:
  66. SliverGridDelegateWithMaxCrossAxisExtent(maxCrossAxisExtent: 128.0),
  67. itemBuilder: (context, index) {
  68. return FutureBuilder<ui.Image>(
  69. future: makeImage(),
  70. builder: (context, snapshot) {
  71. if (snapshot.hasData) {
  72. return RawImage(
  73. image: snapshot.data,
  74. );
  75. } else {
  76. return Center(child: CircularProgressIndicator());
  77. }
  78. },
  79. );
  80. },
  81. ),
  82. );
  83. }
  84. }
Add Comment
Please, Sign In to add comment