zoukankan      html  css  js  c++  java
  • Flutter: provider 使用小部件的小部件构建的依赖注入系统

    dependencies:
      provider:
    
    import 'package:dart_printf/dart_printf.dart';
    import 'package:flutter/material.dart';
    import 'package:provider/provider.dart';
    
    class Counter with ChangeNotifier {
      Counter() {
        printf('init');
      }
      int _n = 0;
      int get n => _n;
      set n(v) {
        _n = v;
        notifyListeners();
      }
    }
    
    void main() {
      var _app = MultiProvider(
        providers: [
          ChangeNotifierProvider(create: (_) => Counter()),
    
          // var counter = Counter();
          // ChangeNotifierProvider.value(value: counter),
        ],
        child: MyApp(),
      );
      runApp(_app);
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: HomePage(),
        );
      }
    }
    
    class HomePage extends StatefulWidget {
      @override
      _HomePageState createState() => _HomePageState();
    }
    
    class _HomePageState extends State<HomePage> {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Home Page'),
          ),
          body: Column(
            children: [
              Center(
                child: Text('home page ${context.watch<Counter>().n}'),
              ),
              W1(),
              W2(),
            ],
          ),
          floatingActionButton: FloatingActionButton(
            onPressed: () {
              context.read<Counter>().n++;
            },
          ),
        );
      }
    }
    
    class W1 extends StatefulWidget {
      @override
      _W1State createState() => _W1State();
    }
    
    class _W1State extends State<W1> {
      @override
      Widget build(BuildContext context) {
        return Container(
           100,
          height: 100,
          child: Text(context.watch<Counter>().n.toString()),
        );
      }
    }
    
    class W2 extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Container(
           100,
          height: 100,
          child: Text(context.watch<Counter>().n.toString()),
        );
      }
    }
    
  • 相关阅读:
    数据安全:1.98亿购车者的购车记录公之于众
    【作者面对面问答】包邮送《Redis 5设计与源码分析》5本
    关于区块链学习资料
    《机器学习》周志华西瓜书学习笔记(九):聚类
    Bulletproof零知识证明
    数据接收合并
    数据接收合并
    数据接收合并
    数据接收合并
    Tomcat 8 Host-Manager配置访问的方法,全网唯一正确配置
  • 原文地址:https://www.cnblogs.com/ajanuw/p/11051206.html
Copyright © 2011-2022 走看看