Flutter配置管理插件appfigurateflutter的使用

Flutter配置管理插件appfigurateflutter的使用

本示例演示了如何将Appfigurate SDK集成到一个Flutter iOS和Android应用中。

Appfigurate是一款配置管理工具,用于动态更新应用配置。其文档可以在这里查阅。

Appfigurate是Electric Bolt的商标,在新西兰注册。

完整示例

示例代码

// 导入必要的包
import 'dart:io';

import 'package:appfigurateflutter/appfigurateflutter.dart'; // 引入Appfigurate Flutter SDK
import 'package:appfigurateflutter_example/exampleconfiguration.dart'; // 引入配置文件
import 'package:flutter/material.dart';

void main() async { // 主函数
  await AppfigurateLibrary.initialize(); // 初始化Appfigurate SDK
  runApp(const MyApp()); // 运行应用
}

class MyApp extends StatelessWidget { // 主应用类
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) { // 构建UI
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget { // 主页面类
  const MyHomePage({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  [@override](/user/override)
  void initState() { // 页面初始化时调用
    super.initState();
    APLAddConfigurationUpdatedListener(configurationUpdated); // 添加配置更新监听器
  }

  [@override](/user/override)
  void dispose() { // 页面销毁时调用
    APLRemoveConfigurationUpdatedListener(configurationUpdated); // 移除配置更新监听器
    super.dispose();
  }

  void configurationUpdated(String? action) { // 配置更新回调
    if (action != null) {
      print('Configuration updated by action $action'); // 打印更新信息
    } else {
      print('Configuration updated'); // 打印更新信息
    }
    setState(() {}); // 重新构建界面
  }

  [@override](/user/override)
  Widget build(BuildContext context) { // 构建UI
    var media = MediaQuery.of(context);
    var padding = media.padding.left == 0.0 ? 8.0 : media.padding.left;

    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Example ${APLVersion()}'), // 设置标题
      ),
      body: APLConfigurationLabel( // 使用配置标签
        child: ListView(
          padding: EdgeInsets.only(left: padding, right: padding), // 设置内边距
          children: [
            ListTile( // 列表项
              title: Text(Platform.isAndroid ? 'bool' : 'boolean'), // 显示布尔类型标题
              subtitle: Text(ExampleConfiguration().boolean ? 'true' : 'false'), // 显示布尔类型值
            ),
            ListTile( // 列表项
              title: const Text('string_Textfield'), // 显示字符串标题
              subtitle: Text(ExampleConfiguration().string_Textfield), // 显示字符串值
            ),
            // 其他列表项...
            ListTile( // 列表项
              title: const Text('double_RegexTextfield_List'), // 显示双精度浮点数正则文本框列表项标题
              subtitle: Text(ExampleConfiguration().double_RegexTextfield_List), // 显示双精度浮点数正则文本框列表项值
            ),
          ]
        )
      ),
    );
  }
}

更多关于Flutter配置管理插件appfigurateflutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter配置管理插件appfigurateflutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


appfigurate_flutter 是一个用于 Flutter 应用的配置管理插件,它允许你在运行时动态地更新应用的配置,而不需要重新发布应用。这对于需要频繁更新配置(如 API 端点、功能开关等)的应用非常有用。

安装 appfigurate_flutter

首先,你需要在 pubspec.yaml 文件中添加 appfigurate_flutter 依赖:

dependencies:
  flutter:
    sdk: flutter
  appfigurate_flutter: ^1.0.0

然后,运行 flutter pub get 来安装依赖。

基本使用

  1. 初始化 Appfigurate

    在应用的 main.dart 文件中,初始化 Appfigurate

    import 'package:appfigurate_flutter/appfigurate_flutter.dart';
    import 'package:flutter/material.dart';
    
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      
      // 初始化 Appfigurate
      await Appfigurate.initialize(
        apiKey: 'YOUR_API_KEY',
        appId: 'YOUR_APP_ID',
      );
      
      runApp(MyApp());
    }
    

    你需要从 Appfigurate 平台获取 apiKeyappId

  2. 获取配置

    在应用中,你可以使用 Appfigurate 来获取配置值。例如:

    import 'package:appfigurate_flutter/appfigurate_flutter.dart';
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text('Appfigurate Example'),
            ),
            body: Center(
              child: FutureBuilder<String>(
                future: Appfigurate.getString('some_key'),
                builder: (context, snapshot) {
                  if (snapshot.connectionState == ConnectionState.waiting) {
                    return CircularProgressIndicator();
                  } else if (snapshot.hasError) {
                    return Text('Error: ${snapshot.error}');
                  } else {
                    return Text('Value: ${snapshot.data}');
                  }
                },
              ),
            ),
          ),
        );
      }
    }
    

    在这个例子中,我们使用 Appfigurate.getString('some_key') 来获取一个字符串类型的配置值。

  3. 监听配置变化

    你可以监听配置的变化,以便在配置更新时自动刷新 UI:

    class MyApp extends StatefulWidget {
      @override
      _MyAppState createState() => _MyAppState();
    }
    
    class _MyAppState extends State<MyApp> {
      String _configValue = 'Loading...';
    
      @override
      void initState() {
        super.initState();
        _loadConfig();
        Appfigurate.addListener(_onConfigChanged);
      }
    
      @override
      void dispose() {
        Appfigurate.removeListener(_onConfigChanged);
        super.dispose();
      }
    
      void _loadConfig() async {
        final value = await Appfigurate.getString('some_key');
        setState(() {
          _configValue = value;
        });
      }
    
      void _onConfigChanged() {
        _loadConfig();
      }
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text('Appfigurate Example'),
            ),
            body: Center(
              child: Text('Value: $_configValue'),
            ),
          ),
        );
      }
    }
回到顶部