How to work with progress indicator in flutter?

后端 未结 12 811
面向向阳花
面向向阳花 2020-12-02 05:29

I\'m newbie in flutter and wanted to know what is better way to add CircularProgressIndicator in my layout. For example, my login view. This view have username,

12条回答
  •  不知归路
    2020-12-02 06:07

    I suggest to use this plugin flutter_easyloading

    flutter_easyloading is clean and lightweight Loading widget for Flutter App, easy to use without context, support iOS and Android

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

    dependencies:
      flutter_easyloading: ^2.0.0
    

    Now in your Dart code, you can use:

    import 'package:flutter_easyloading/flutter_easyloading.dart';
    

    To use First, initialize FlutterEasyLoading in MaterialApp/CupertinoApp

    import 'dart:async';
    import 'package:flutter/material.dart';
    import 'package:flutter/cupertino.dart';
    import 'package:flutter_easyloading/flutter_easyloading.dart';
    import './custom_animation.dart';
    
    import './test.dart';
    
    void main() {
      runApp(MyApp());
      configLoading();
    }
    
    void configLoading() {
      EasyLoading.instance
        ..displayDuration = const Duration(milliseconds: 2000)
        ..indicatorType = EasyLoadingIndicatorType.fadingCircle
        ..loadingStyle = EasyLoadingStyle.dark
        ..indicatorSize = 45.0
        ..radius = 10.0
        ..progressColor = Colors.yellow
        ..backgroundColor = Colors.green
        ..indicatorColor = Colors.yellow
        ..textColor = Colors.yellow
        ..maskColor = Colors.blue.withOpacity(0.5)
        ..userInteractions = true
        ..customAnimation = CustomAnimation();
    }
    

    Then, use per your requirement

    import 'package:flutter/material.dart';
    import 'package:flutter_easyloading/flutter_easyloading.dart';
    import 'package:dio/dio.dart';
    
    class TestPage extends StatefulWidget {
      @override
      _TestPageState createState() => _TestPageState();
    }
    
    class _TestPageState extends State {
      @override
      void initState() {
        super.initState();
        // EasyLoading.show();
      }
    
      @override
      void deactivate() {
        EasyLoading.dismiss();
        super.deactivate();
      }
    
      void loadData() async {
        try {
          EasyLoading.show();
          Response response = await Dio().get('https://github.com');
          print(response);
          EasyLoading.dismiss();
        } catch (e) {
          EasyLoading.showError(e.toString());
          print(e);
        }
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Flutter EasyLoading'),
          ),
          body: Center(
            child: FlatButton(
              textColor: Colors.blue,
              child: Text('loadData'),
              onPressed: () {
                loadData();
                // await Future.delayed(Duration(seconds: 2));
                // EasyLoading.show(status: 'loading...');
                // await Future.delayed(Duration(seconds: 5));
                // EasyLoading.dismiss();
              },
            ),
          ),
        );
      }
    }
    

提交回复
热议问题