main.dart import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'game_state.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { return MultiProvider( providers: [ChangeNotifierProvider(create: (_) => GameState())], child: Consumer<GameState>( builder: (context, gameState, _) { return MaterialApp( title: '测试provider', theme: ThemeData( scaffoldBackgroundColor: Color(gameState.appBkColor), ), home: const MyHomePage(), ); }, ), ); } } class MyHomePage extends StatelessWidget { const MyHomePage({Key key}) : super(key: key); @override Widget build(BuildContext context) { final gameState = Provider.of<GameState>(context); return Center( child: Column( children: <Widget>[ CachedNetworkImage( imageUrl: gameState.imgUrl, placeholder: (context, url) => CircularProgressIndicator(), errorWidget: (context, url, error) => Icon(Icons.error), ), gameState.dioType == 0 ? CircularProgressIndicator() : Text(gameState.followType == 0 ? "立即关注" : "取消关注") ], ), ); } } game_state.dart import 'package:flutter/material.dart'; import 'package:dio/dio.dart'; class GameState with ChangeNotifier { int _appBkColor = 0xFFB2FF59; int _followType = 0; int _dioType = 0; String _imgUrl = 'https://cdn.steemitimages.com/DQmZki1T36dy6W5uVcbeizuE4aqEiRuLc1gKfQbAVdpTKN4/img-8e74eba5c258f92bf5b3c3a85b0c669b.jpg'; int get appBkColor => _appBkColor; String get imgUrl => _imgUrl; int get followType => _followType; int get dioType => _dioType; GameState(){ _getFollowType(); } void _getFollowType() async { Dio dio = new Dio(); Response response; response = await dio.get( 'http://47.91.223.85:9000/get_followers?following=iguazi123&startFollower=baiyumo&followType=blog&limit=1'); if (response.statusCode == 200) { print("cxy--------------------------"+response.data.toString()); _dioType = 1; String data = response.data.toString(); if (null != data && data.isNotEmpty && data != "[]") { _followType = 1; } else { _followType = 0; } } else { _dioType = 0; } notifyListeners(); } }
Flutter中provider的简单使用
最新推荐文章于 2024-05-11 14:26:36 发布