Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:flutter/material.dart';
- import 'package:flutter/cupertino.dart';
- import 'package:flutter_bloc/flutter_bloc.dart';
- import 'package:intl/intl.dart';
- import 'package:shared_preferences/shared_preferences.dart';
- import 'package:sistesi/bloc/berita_bloc.dart';
- import 'package:sistesi/providers/ApiServices.dart';
- import 'detailPengumumanView.dart';
- class DaftarBerita extends StatefulWidget {
- @override
- _DaftarBeritaState createState() => _DaftarBeritaState();
- }
- class _DaftarBeritaState extends State<DaftarBerita> {
- ApiServices apiServices;
- SharedPreferences sharedPreferences;
- String urlFile = "";
- BeritaBloc beritaBloc;
- ScrollController scrollController = ScrollController();
- void onScroll() {
- double maxScroll = scrollController.position.maxScrollExtent;
- double currentScroll = scrollController.position.pixels;
- if (currentScroll == maxScroll) beritaBloc.add(BeritaEvent());
- }
- initSharedPreferences() async {
- sharedPreferences = await SharedPreferences.getInstance();
- urlFile = sharedPreferences.getString("urlFile");
- }
- @override
- void initState() {
- initSharedPreferences();
- super.initState();
- }
- @override
- Widget build(BuildContext context) {
- daftarBerita(berita) {
- String urlImage = "";
- if (berita.thumbnail == null) {
- urlImage = "https://dev.sistesi.id/basic/public/img/nodata.jpg";
- } else if (berita.thumbnail.toString().contains("https")) {
- urlImage = berita.thumbnail;
- } else {
- urlImage =
- urlFile.toString() + berita.thumbnail.toString();
- }
- return Container(
- height: 100.0,
- child: GestureDetector(
- onTap: () {
- Navigator.push(context, MaterialPageRoute(builder: (context) {
- return PengumumanBeritaView(
- id: berita.id,
- tipe: "b",
- );
- }));
- },
- child: Row(
- children: <Widget>[
- Container(
- height: 80,
- width: 80,
- padding:
- EdgeInsets.only(left: 0, top: 10, bottom: 70, right: 20),
- decoration: BoxDecoration(
- image: DecorationImage(
- image: NetworkImage("$urlImage"), fit: BoxFit.cover)),
- ),
- Padding(
- padding: const EdgeInsets.all(8.0),
- child: Column(
- mainAxisAlignment: MainAxisAlignment.start,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: <Widget>[
- Container(
- width: MediaQuery.of(context).size.width * 0.7,
- child: Text(
- berita.judul,
- style: TextStyle(
- fontWeight: FontWeight.w700, fontSize: 17),
- ),
- ),
- Text(
- DateFormat('dd MMMM yyyy').format(
- DateTime.parse(berita.tanggal)),
- style: TextStyle(color: Colors.grey, fontSize: 12.0)),
- ],
- ),
- )
- ],
- ),
- ),
- );
- }
- final listPengumuman =
- BlocBuilder<BeritaBloc, BeritaState>(builder: (context, state) {
- beritaBloc = BlocProvider.of<BeritaBloc>(context);
- scrollController.addListener(onScroll);
- if (state is BeritaUninitialized) {
- return Center(
- child: SizedBox(
- width: 30,
- height: 30,
- child: CircularProgressIndicator(),
- ),
- );
- } else {
- BeritaLoaded beritaLoaded = state as BeritaLoaded;
- return ListView.separated(
- controller: scrollController,
- separatorBuilder: (context, index) {
- return Divider(
- color: Colors.grey,
- );
- },
- padding: EdgeInsets.all(6),
- itemCount: (beritaLoaded.hasReachedMax || beritaLoaded.berita.length <= 6)
- ? beritaLoaded.berita.length
- : beritaLoaded.berita.length + 1,
- itemBuilder: (context, index) =>
- (index < beritaLoaded.berita.length)
- ? daftarBerita(beritaLoaded.berita[index])
- : Container(
- child: Center(
- child: SizedBox(
- width: 30,
- height: 30,
- child: CircularProgressIndicator(),
- ),
- ),
- ),
- );
- }
- });
- final _appBAr = CupertinoNavigationBar(
- middle: Text(
- "Daftar Berita",
- style: TextStyle(color: Colors.black),
- ),
- automaticallyImplyLeading: true,
- );
- return Scaffold(
- appBar: _appBAr,
- body: BlocProvider<BeritaBloc>(
- builder: (context) => BeritaBloc()..add(BeritaEvent()),
- child: listPengumuman),
- );
- }
- }
Add Comment
Please, Sign In to add comment