refresh_wow 0.0.3

  • README.md
  • CHANGELOG.md
  • Example
  • Installing
  • Versions
  • 70

refresh_wow

#####自持自定义头,尾. #####加载更多.

Getting Started

For help getting started with Flutter, view our online documentation.

For help on editing package code, view the documentation. image

#属性

  • itemData: 数据集合 []
  • footerItemCount: 底部控件的个数 2
  • headerItemCount: 头部控件个数2,
  • itemBuilder: (BuildContext context, int index, String itemData) 构建item
  • headerBuilder: (BuildContext context, int index) 构建头部控件
  • footerBuilder: (BuildContext context, int index) 构建底部控件
  • onRefresh: _handleRefresh, 刷新
  • onLoadMore: !hasMore ? _handleLoadMore : null,) 加载更多,为null时候标示没有更多数据

####refresh_config()里的

  • var refreshingShowText = '正在刷新数据';
  • var errShowText = '数据刷新失败\n点击重试';
  • var doneShowText = '⁽⁽ଘ( ˊᵕˋ )ଓ⁾⁾';
  • var loadMoreTextStyle = new TextStyle(); ####可以refresh_config().errShowText='自定义错误'修改
有需求的话,后期再加入其他的吧

[0.0.1] - TODO: Add release date.

  • TODO: Describe initial release.

0.0.3

  • 修复一打开界面就加载更多的bug

example/lib/main.dart

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:refresh_wow/refresh_wow.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Flutter Demo',
      theme: new ThemeData(
        // This is the theme of your application.
        //
        // Try running your application with "flutter run". You'll see the
        // application has a blue toolbar. Then, without quitting the app, try
        // changing the primarySwatch below to Colors.green and then invoke
        // "hot reload" (press "r" in the console where you ran "flutter run",
        // or press Run > Flutter Hot Reload in IntelliJ). Notice that the
        // counter didn't reset back to zero; the application is not restarted.
        primarySwatch: Colors.blue,
      ),
      home: new MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  // This widget is the home page of your application. It is stateful, meaning
  // that it has a State object (defined below) that contains fields that affect
  // how it looks.

  // This class is the configuration for the state. It holds the values (in this
  // case the title) provided by the parent (in this case the App widget) and
  // used by the build method of the State. Fields in a Widget subclass are
  // always marked "final".

  final String title;

  @override
  _MyHomePageState createState() => new _MyHomePageState();
}

Iterable<int> get positiveIntegers sync* {
  int i = 0;
  while (true) yield i++;
}

class _MyHomePageState extends State<MyHomePage> {

  List<String>list = positiveIntegers
      .skip(1) // don't use 0
      .take(100) // take 10 numbers
      .toList().map((i) => "我是初始数据$i").toList();
  bool hasMore = false;

  Future<Null> _handleRefresh() {
    print('_handleRefresh');
    final Completer<Null> completer = new Completer<Null>();
    new Timer(new Duration(milliseconds: 500), () {
      setState(() {
        list = positiveIntegers
            .skip(1) // don't use 0
            .take(100) // take 10 numbers
            .toList().map((i) => "我是初始数据$i").toList();
      });

      completer.complete(null);
    });
    return completer.future;
  }

  int error = 0;

  Future<Null> _handleLoadMore() {
    print('_handleLoadMore');
    final Completer<Null> completer = new Completer<Null>();
    new Timer(new Duration(milliseconds: 1300), () {
      //error模拟失败
      if (error != 1) {
        setState(() {
          error++;
          list.addAll(positiveIntegers
              .skip(1) // don't use 0
              .take(70) // take 10 numbers
              .toList().map((i) => "我是更多数据$i").toList());
          hasMore = list.length > 300;
        });
        completer.complete(null);
      } else {
        error++;
        completer.completeError(null);
//        throw new Exception('获取数据失败');
      }
    });
    return completer.future;
  }


  @override
  Widget build(BuildContext context) {
    // This method is rerun every time setState is called, for instance as done
    // by the _incrementCounter method above.
    //
    // The Flutter framework has been optimized to make rerunning build methods
    // fast, so that you can just rebuild anything that needs updating rather
    // than having to individually change instances of widgets.
    return new Scaffold(
        appBar: new AppBar(
          // Here we take the value from the MyHomePage object that was created by
          // the App.build method, and use it to set our appbar title.
          title: new Text(widget.title),
        ),
        body: new RefreshListView(
          itemData: this.list,
          footerItemCount: 2,
          headerItemCount: 2,
          itemBuilder: (BuildContext context, int index, String itemData) {
            return new Text('itemData: $itemData index: $index');
          },
          headerBuilder: (BuildContext context, int index) {
            return new Text('header: $index');
          },
          footerBuilder: (BuildContext context, int index) {
            return new Text('footer: $index');
          },
          onRefresh: _handleRefresh,
          onLoadMore: !hasMore ? _handleLoadMore : null,)
    );
  }
}

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  refresh_wow: "^0.0.3"

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter packages get

Alternatively, your editor might support packages get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:refresh_wow/refresh_wow.dart';
        
Version Uploaded Documentation Archive
0.0.3 Mar 23, 2018 Go to the documentation of refresh_wow 0.0.3 Download refresh_wow 0.0.3 archive
0.0.2 Mar 23, 2018 Go to the documentation of refresh_wow 0.0.2 Download refresh_wow 0.0.2 archive
0.0.1 Mar 22, 2018 Go to the documentation of refresh_wow 0.0.1 Download refresh_wow 0.0.1 archive

Analysis

We analyzed this package on Apr 23, 2018, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.0.0-dev.49.0
  • pana: 0.10.6
  • Flutter: 0.3.2

Scores

Popularity:
Describes how popular the package is relative to other packages. [more]
41 / 100
Health:
Code health derived from static analysis. [more]
98 / 100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100 / 100
Overall score:
Weighted score of the above. [more]
70
Learn more about scoring.

Platforms

Detected platforms: Flutter

References Flutter, and has no conflicting libraries.

Suggestions

  • The description is too short.

    Add more detail about the package, what it does and what is its target use case. Try to write at least 60 characters.

  • Package is pre-v1 release.

    While there is nothing inherently wrong with versions of 0.*.*, it usually means that the author is still experimenting with the general direction API.

  • Fix analysis and formatting issues.

    Analysis or formatting checks reported 3 hints.

    Run flutter format to format lib/load_more_widget.dart.

    Run flutter format to format lib/refresh_config.dart.

    Similar analysis of the following files failed:

    • lib/refresh_wow.dart (hint)

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=1.23.0 <2.2.0
flutter 0.0.0
Transitive dependencies
collection 1.14.6 1.14.9
meta 1.1.2
sky_engine 0.0.99
typed_data 1.1.5
vector_math 2.0.6
Dev dependencies
test ^0.12.0