timelines_page.dart 2.11 KB
import 'dart:convert';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:one_poem/timeline/models/friend_entity.dart';
import 'package:one_poem/timeline/widgets/friend_cell.dart';
import 'package:one_poem/timeline/widgets/header_view.dart';

class TimelinesPage extends StatefulWidget {
  const TimelinesPage({Key? key}) : super(key: key);

  @override
  _TimelinesPageState createState() => _TimelinesPageState();
}

class _TimelinesPageState extends State<TimelinesPage>{
  final ScrollController _scrollController = ScrollController();
  double _opacity = 0;

  FriendEntity _friendmodelEntity = FriendEntity();

  Future<String> loadAsset() async {
    return await rootBundle.loadString('lib/res/timeline/Data.json');
  }

  @override
  void initState() {
    super.initState();

    loadAsset().then((value){
      var json = jsonDecode(value);
      _friendmodelEntity = FriendEntity.fromJson(json);
      setState(() {});
    });


    _scrollController.addListener(() {

      double alph = _scrollController.offset/200;
      if (alph < 0) {
        alph = 0;
      } else if (alph > 1) {
        alph = 1;
      }
      setState(() {
        _opacity = alph;
      });


    });

  }

  Widget _mainListViewBuidler(BuildContext context , int index) {
    return FriendCell(model: _friendmodelEntity.data![index],);
  }


  @override
  Widget build(BuildContext context) {

    return Scaffold(
      body: Stack(
        children: <Widget>[
          ListView(
            padding: const EdgeInsets.only(top: 0),
            controller: _scrollController,
            children: <Widget>[
              const HeaderView(),
              ListView.builder(padding: const EdgeInsets.only(top: 0), itemBuilder: _mainListViewBuidler , itemCount: _friendmodelEntity.data!.length, shrinkWrap: true, physics:NeverScrollableScrollPhysics(),)
            ],
          ),
          Opacity(
            opacity: _opacity,
            child: const CupertinoNavigationBar(
              middle: Text("朋友圈"),

            ),
          )

        ],

      ),
    );
  }
}