Advertisement
Guest User

main.dart

a guest
Dec 14th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.41 KB | None | 0 0
  1. import 'package:flutter/material.dart';
  2. import 'package:http/http.dart' as http;
  3. import 'dart:async';
  4. import 'dart:convert';
  5. import 'models/post_class.dart';
  6.  
  7.  
  8. void main() {
  9. runApp( MaterialApp(
  10. debugShowCheckedModeBanner: false,
  11. home: MyApp(),
  12. ));
  13. }
  14.  
  15. class MyApp extends StatefulWidget {
  16. @override
  17. _State createState() => _State();
  18. }
  19.  
  20. class _State extends State<MyApp> {
  21. var page = 1;
  22. ScrollController _scrollController = ScrollController();
  23. Future<List<Post>> fetchPost() async {
  24. // limit++;
  25. var data = await http.get("https://chsknews.com/wp-json/wp/v2/posts?fields=title,date,link,x_featured_media&per_page=10&page="+"$page");
  26. var decoded = json.decode(data.body);
  27.  
  28. List<Post> posts = List();
  29. decoded.forEach((post) {
  30. posts.add(Post(post["title"]["rendered"],post["link"],post["x_featured_media"],post["date"]));
  31. });
  32.  
  33.  
  34. setState(() {
  35. _scrollController.addListener(() {
  36.  
  37. if(_scrollController.position.pixels == _scrollController.position.maxScrollExtent){
  38. }
  39. });
  40. });
  41. return posts;
  42.  
  43. }
  44. @override
  45. Widget build(BuildContext context) {
  46. return Scaffold(
  47. appBar: AppBar(
  48. title: Text('Feed Test'),
  49. ),
  50. body: Center(
  51. child: Container(
  52. padding: EdgeInsets.all(10.0),
  53. child: FutureBuilder(
  54. future: fetchPost(),
  55. builder: (context,snapshot){
  56. return snapshot.data == null ? CircularProgressIndicator() :
  57. ListView.builder(
  58. controller: _scrollController,
  59. itemCount: snapshot.data == null ? 0 : snapshot.data.length ,
  60. itemBuilder: (context,index){
  61. return GestureDetector(
  62. onTap: (){
  63. Navigator.push(
  64. context,
  65. MaterialPageRoute(builder: (context) => FirstScreen()),
  66. );
  67. },
  68. child:
  69. Card(
  70. child: Padding(
  71. padding: EdgeInsets.all(5.0),
  72. child: Column(
  73. children: <Widget>[
  74. Row(
  75.  
  76. children: <Widget>[
  77.  
  78. Image.network(snapshot.data[index].imgUrl,width:80.0),
  79. Expanded(
  80. child: Padding(
  81. padding: EdgeInsets.only(left: 10.0),
  82. child: Column(
  83. children: <Widget>[
  84. Text(
  85. snapshot.data[index].title,style:TextStyle(fontSize: 18.0,color: Colors.black),
  86. ),
  87.  
  88. ],
  89. )
  90. )
  91. )
  92. ],
  93. ),
  94. ],
  95. )
  96.  
  97. )
  98.  
  99. ) ,
  100.  
  101. );
  102. },
  103. );
  104. },
  105. ),
  106. ),
  107. )
  108. );
  109. }
  110. }
  111. class FirstScreen extends StatelessWidget {
  112.  
  113.  
  114.  
  115. static String html = '<h1>This is heading 1</h1> <h2>This is heading 2</h2><h3>This is heading 3</h3><h4>This is heading 4</h4><h5>This is heading 5</h5><h6>This is heading 6</h6><img alt="Test Image" src="https://i.ytimg.com/vi/RHLknisJ-Sg/maxresdefault.jpg" /><p>This paragraph contains a lot of lines in the source code, but the browser ignores it.</p>';
  116. // Convert html to Markdown
  117.  
  118.  
  119. @override
  120. Widget build(BuildContext context) {
  121. return Scaffold(
  122. appBar: AppBar(
  123. title: Text('First Screen'),
  124. ),
  125. body: Center(
  126. child: Column(
  127. children: <Widget>[
  128. RaisedButton(
  129. child: Text('Launch screen'),
  130. onPressed: () {
  131. Navigator.pop(context);
  132. },
  133. ),
  134.  
  135. ],
  136. )
  137. ),
  138. );
  139. }
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement