Untitled
unknown
plain_text
a year ago
2.2 kB
7
Indexable
import 'package:dicoding_news_app/article.dart'; import 'package:dicoding_news_app/detail_page.dart'; import 'package:dicoding_news_app/widgets/platform_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class ArticleListPage extends StatelessWidget { const ArticleListPage({Key? key}) : super(key: key); Widget _buildAndroid(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('News App Android'), ), ); } Widget _buildIos(BuildContext context) { return CupertinoPageScaffold( navigationBar: const CupertinoNavigationBar( middle: Text('News App Ios'), transitionBetweenRoutes: false, ), child: _buildList(context), ); } Widget _buildList(BuildContext context) { return FutureBuilder<String>( future: DefaultAssetBundle.of(context).loadString('assets/articles.json'), builder: (context, snapshot) { final List<Article> articles = parseArticles(snapshot.data); return ListView.builder( itemCount: articles.length, itemBuilder: (context, index) { return _buildArticleItem(context, articles[index]); }, ); }, ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text( 'News App', ), ), body: PlatformWidget( androidBuilder: _buildAndroid, iosBuilder: _buildIos)); } Widget _buildArticleItem(BuildContext context, Article article) { return Material( child: ListTile( contentPadding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), leading: Hero( tag: article.urlToImage, child: Image.network( article.urlToImage, width: 100, ), ), title: Text( article.title, ), subtitle: Text(article.author), onTap: () { Navigator.pushNamed(context, ArticleDetailPage.routeName, arguments: article); }, ), ); } }
Editor is loading...
Leave a Comment