zoukankan      html  css  js  c++  java
  • flutter State管理

    import 'package:flutter/material.dart';
    import 'package:scoped_model/scoped_model.dart';
    
    class StateManagementDemo extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return ScopedModel(
          model: CounterModel(),
          child: Scaffold(
            appBar: AppBar(
              title: Text('StateManagementDemo'),
              elevation: 0.0,
            ),
            body: CounterWrapper(),
            floatingActionButton: ScopedModelDescendant<CounterModel>(
              rebuildOnChange: false,
              builder: (context, _, model) => FloatingActionButton(
                    child: Icon(Icons.add),
                    onPressed: model.increaseCount,
                  ),
            ),
          ),
        );
      }
    }
    
    class CounterWrapper extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Center(
          child: Counter(),
        );
      }
    }
    
    class Counter extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return ScopedModelDescendant<CounterModel>(
          builder: (context, _, model) => ActionChip(
            label: Text('${model.count}'),
            onPressed: model.increaseCount,
          ),
        );
      }
    }
    
    class CounterProvider extends InheritedWidget {
      final int count;
      final VoidCallback increaseCount;
      final Widget child;
    
      CounterProvider({
        this.count,
        this.increaseCount,
        this.child,
      }) : super(child: child);
    
      static CounterProvider of(BuildContext context) =>
          context.inheritFromWidgetOfExactType(CounterProvider);
    
      @override
      bool updateShouldNotify(InheritedWidget oldWidget) {
        return true;
      }
    }
    
    class CounterModel extends Model {
      int _count = 0;
      int get count => _count;
    
      void increaseCount() {
        _count += 1;
        notifyListeners();
      }
    }
    scoped_model: ^0.3.0

    效果:

  • 相关阅读:
    JNday7-pm
    JNday7-am
    bzoj1047理想的正方形
    关于OI中简单的常数优化
    bzoj1050旅行
    bzoj1044木棍分割
    bzoj1875 HH去散步
    bzoj1059矩阵游戏
    bzoj2705Longge的问题
    bzoj1833数字计数
  • 原文地址:https://www.cnblogs.com/loaderman/p/11345972.html
Copyright © 2011-2022 走看看