mirror of
				https://gitlab.com/famedly/fluffychat.git
				synced 2025-11-03 22:07:23 +01:00 
			
		
		
		
	fix: Add missing SafeArea to homeserver picker
This commit is contained in:
		
							parent
							
								
									da66d6e400
								
							
						
					
					
						commit
						587c4210f4
					
				@ -46,123 +46,125 @@ class HomeserverPickerView extends StatelessWidget {
 | 
			
		||||
          ),
 | 
			
		||||
        ],
 | 
			
		||||
      ),
 | 
			
		||||
      body: Column(
 | 
			
		||||
        children: [
 | 
			
		||||
          // display a prominent banner to import session for TOR browser
 | 
			
		||||
          // users. This feature is just some UX sugar as TOR users are
 | 
			
		||||
          // usually forced to logout as TOR browser is non-persistent
 | 
			
		||||
          AnimatedContainer(
 | 
			
		||||
            height: controller.isTorBrowser ? 64 : 0,
 | 
			
		||||
            duration: const Duration(milliseconds: 300),
 | 
			
		||||
            clipBehavior: Clip.hardEdge,
 | 
			
		||||
            curve: Curves.bounceInOut,
 | 
			
		||||
            decoration: const BoxDecoration(),
 | 
			
		||||
            child: Material(
 | 
			
		||||
      body: SafeArea(
 | 
			
		||||
        child: Column(
 | 
			
		||||
          children: [
 | 
			
		||||
            // display a prominent banner to import session for TOR browser
 | 
			
		||||
            // users. This feature is just some UX sugar as TOR users are
 | 
			
		||||
            // usually forced to logout as TOR browser is non-persistent
 | 
			
		||||
            AnimatedContainer(
 | 
			
		||||
              height: controller.isTorBrowser ? 64 : 0,
 | 
			
		||||
              duration: const Duration(milliseconds: 300),
 | 
			
		||||
              clipBehavior: Clip.hardEdge,
 | 
			
		||||
              borderRadius:
 | 
			
		||||
                  const BorderRadius.vertical(bottom: Radius.circular(8)),
 | 
			
		||||
              color: Theme.of(context).colorScheme.surface,
 | 
			
		||||
              child: ListTile(
 | 
			
		||||
                leading: const Icon(Icons.vpn_key),
 | 
			
		||||
                title: Text(L10n.of(context)!.hydrateTor),
 | 
			
		||||
                subtitle: Text(L10n.of(context)!.hydrateTorLong),
 | 
			
		||||
                trailing: const Icon(Icons.chevron_right_outlined),
 | 
			
		||||
                onTap: controller.restoreBackup,
 | 
			
		||||
              curve: Curves.bounceInOut,
 | 
			
		||||
              decoration: const BoxDecoration(),
 | 
			
		||||
              child: Material(
 | 
			
		||||
                clipBehavior: Clip.hardEdge,
 | 
			
		||||
                borderRadius:
 | 
			
		||||
                    const BorderRadius.vertical(bottom: Radius.circular(8)),
 | 
			
		||||
                color: Theme.of(context).colorScheme.surface,
 | 
			
		||||
                child: ListTile(
 | 
			
		||||
                  leading: const Icon(Icons.vpn_key),
 | 
			
		||||
                  title: Text(L10n.of(context)!.hydrateTor),
 | 
			
		||||
                  subtitle: Text(L10n.of(context)!.hydrateTorLong),
 | 
			
		||||
                  trailing: const Icon(Icons.chevron_right_outlined),
 | 
			
		||||
                  onTap: controller.restoreBackup,
 | 
			
		||||
                ),
 | 
			
		||||
              ),
 | 
			
		||||
            ),
 | 
			
		||||
          ),
 | 
			
		||||
          Expanded(
 | 
			
		||||
            child: ListView(
 | 
			
		||||
              children: [
 | 
			
		||||
                Container(
 | 
			
		||||
                  alignment: Alignment.center,
 | 
			
		||||
                  height: 200,
 | 
			
		||||
                  child: Image.asset('assets/info-logo.png'),
 | 
			
		||||
                ),
 | 
			
		||||
                Padding(
 | 
			
		||||
                  padding: const EdgeInsets.all(12.0),
 | 
			
		||||
                  child: TextField(
 | 
			
		||||
                    focusNode: controller.homeserverFocusNode,
 | 
			
		||||
                    controller: controller.homeserverController,
 | 
			
		||||
                    onChanged: controller.onChanged,
 | 
			
		||||
                    decoration: InputDecoration(
 | 
			
		||||
                      prefixText: '${L10n.of(context)!.homeserver}: ',
 | 
			
		||||
                      hintText: L10n.of(context)!.enterYourHomeserver,
 | 
			
		||||
                      suffixIcon: const Icon(Icons.search),
 | 
			
		||||
                      errorText: controller.error,
 | 
			
		||||
                      fillColor: Theme.of(context)
 | 
			
		||||
                          .colorScheme
 | 
			
		||||
                          .background
 | 
			
		||||
                          .withOpacity(0.75),
 | 
			
		||||
                    ),
 | 
			
		||||
                    readOnly: !AppConfig.allowOtherHomeservers,
 | 
			
		||||
                    onSubmitted: (_) => controller.checkHomeserverAction(),
 | 
			
		||||
                    autocorrect: false,
 | 
			
		||||
            Expanded(
 | 
			
		||||
              child: ListView(
 | 
			
		||||
                children: [
 | 
			
		||||
                  Container(
 | 
			
		||||
                    alignment: Alignment.center,
 | 
			
		||||
                    height: 200,
 | 
			
		||||
                    child: Image.asset('assets/info-logo.png'),
 | 
			
		||||
                  ),
 | 
			
		||||
                ),
 | 
			
		||||
                if (controller.displayServerList)
 | 
			
		||||
                  Padding(
 | 
			
		||||
                    padding: const EdgeInsets.all(12.0),
 | 
			
		||||
                    child: Material(
 | 
			
		||||
                      borderRadius:
 | 
			
		||||
                          BorderRadius.circular(AppConfig.borderRadius),
 | 
			
		||||
                      color: Colors.white.withAlpha(200),
 | 
			
		||||
                      clipBehavior: Clip.hardEdge,
 | 
			
		||||
                      child: benchmarkResults == null
 | 
			
		||||
                          ? const Center(
 | 
			
		||||
                              child: Padding(
 | 
			
		||||
                              padding: EdgeInsets.all(12.0),
 | 
			
		||||
                              child: CircularProgressIndicator.adaptive(),
 | 
			
		||||
                            ))
 | 
			
		||||
                          : Column(
 | 
			
		||||
                              children: controller.filteredHomeservers
 | 
			
		||||
                                  .map(
 | 
			
		||||
                                    (server) => ListTile(
 | 
			
		||||
                                      trailing: IconButton(
 | 
			
		||||
                                        icon: const Icon(
 | 
			
		||||
                                          Icons.info_outlined,
 | 
			
		||||
                                          color: Colors.black,
 | 
			
		||||
                                        ),
 | 
			
		||||
                                        onPressed: () =>
 | 
			
		||||
                                            controller.showServerInfo(server),
 | 
			
		||||
                                      ),
 | 
			
		||||
                                      onTap: () => controller.setServer(
 | 
			
		||||
                                          server.homeserver.baseUrl.host),
 | 
			
		||||
                                      title: Text(
 | 
			
		||||
                                        server.homeserver.baseUrl.host,
 | 
			
		||||
                                        style: const TextStyle(
 | 
			
		||||
                                            color: Colors.black),
 | 
			
		||||
                                      ),
 | 
			
		||||
                                      subtitle: Text(
 | 
			
		||||
                                        server.homeserver.description ?? '',
 | 
			
		||||
                                        style: TextStyle(
 | 
			
		||||
                                            color: Colors.grey.shade700),
 | 
			
		||||
                                      ),
 | 
			
		||||
                                    ),
 | 
			
		||||
                                  )
 | 
			
		||||
                                  .toList(),
 | 
			
		||||
                            ),
 | 
			
		||||
                    child: TextField(
 | 
			
		||||
                      focusNode: controller.homeserverFocusNode,
 | 
			
		||||
                      controller: controller.homeserverController,
 | 
			
		||||
                      onChanged: controller.onChanged,
 | 
			
		||||
                      decoration: InputDecoration(
 | 
			
		||||
                        prefixText: '${L10n.of(context)!.homeserver}: ',
 | 
			
		||||
                        hintText: L10n.of(context)!.enterYourHomeserver,
 | 
			
		||||
                        suffixIcon: const Icon(Icons.search),
 | 
			
		||||
                        errorText: controller.error,
 | 
			
		||||
                        fillColor: Theme.of(context)
 | 
			
		||||
                            .colorScheme
 | 
			
		||||
                            .background
 | 
			
		||||
                            .withOpacity(0.75),
 | 
			
		||||
                      ),
 | 
			
		||||
                      readOnly: !AppConfig.allowOtherHomeservers,
 | 
			
		||||
                      onSubmitted: (_) => controller.checkHomeserverAction(),
 | 
			
		||||
                      autocorrect: false,
 | 
			
		||||
                    ),
 | 
			
		||||
                  ),
 | 
			
		||||
              ],
 | 
			
		||||
            ),
 | 
			
		||||
          ),
 | 
			
		||||
          Container(
 | 
			
		||||
            padding: const EdgeInsets.all(12),
 | 
			
		||||
            width: double.infinity,
 | 
			
		||||
            child: Hero(
 | 
			
		||||
              tag: 'loginButton',
 | 
			
		||||
              child: ElevatedButton(
 | 
			
		||||
                onPressed: controller.isLoading
 | 
			
		||||
                    ? null
 | 
			
		||||
                    : controller.checkHomeserverAction,
 | 
			
		||||
                child: controller.isLoading
 | 
			
		||||
                    ? const LinearProgressIndicator()
 | 
			
		||||
                    : Text(L10n.of(context)!.connect),
 | 
			
		||||
                  if (controller.displayServerList)
 | 
			
		||||
                    Padding(
 | 
			
		||||
                      padding: const EdgeInsets.all(12.0),
 | 
			
		||||
                      child: Material(
 | 
			
		||||
                        borderRadius:
 | 
			
		||||
                            BorderRadius.circular(AppConfig.borderRadius),
 | 
			
		||||
                        color: Colors.white.withAlpha(200),
 | 
			
		||||
                        clipBehavior: Clip.hardEdge,
 | 
			
		||||
                        child: benchmarkResults == null
 | 
			
		||||
                            ? const Center(
 | 
			
		||||
                                child: Padding(
 | 
			
		||||
                                padding: EdgeInsets.all(12.0),
 | 
			
		||||
                                child: CircularProgressIndicator.adaptive(),
 | 
			
		||||
                              ))
 | 
			
		||||
                            : Column(
 | 
			
		||||
                                children: controller.filteredHomeservers
 | 
			
		||||
                                    .map(
 | 
			
		||||
                                      (server) => ListTile(
 | 
			
		||||
                                        trailing: IconButton(
 | 
			
		||||
                                          icon: const Icon(
 | 
			
		||||
                                            Icons.info_outlined,
 | 
			
		||||
                                            color: Colors.black,
 | 
			
		||||
                                          ),
 | 
			
		||||
                                          onPressed: () =>
 | 
			
		||||
                                              controller.showServerInfo(server),
 | 
			
		||||
                                        ),
 | 
			
		||||
                                        onTap: () => controller.setServer(
 | 
			
		||||
                                            server.homeserver.baseUrl.host),
 | 
			
		||||
                                        title: Text(
 | 
			
		||||
                                          server.homeserver.baseUrl.host,
 | 
			
		||||
                                          style: const TextStyle(
 | 
			
		||||
                                              color: Colors.black),
 | 
			
		||||
                                        ),
 | 
			
		||||
                                        subtitle: Text(
 | 
			
		||||
                                          server.homeserver.description ?? '',
 | 
			
		||||
                                          style: TextStyle(
 | 
			
		||||
                                              color: Colors.grey.shade700),
 | 
			
		||||
                                        ),
 | 
			
		||||
                                      ),
 | 
			
		||||
                                    )
 | 
			
		||||
                                    .toList(),
 | 
			
		||||
                              ),
 | 
			
		||||
                      ),
 | 
			
		||||
                    ),
 | 
			
		||||
                ],
 | 
			
		||||
              ),
 | 
			
		||||
            ),
 | 
			
		||||
          ),
 | 
			
		||||
        ],
 | 
			
		||||
            Container(
 | 
			
		||||
              padding: const EdgeInsets.all(12),
 | 
			
		||||
              width: double.infinity,
 | 
			
		||||
              child: Hero(
 | 
			
		||||
                tag: 'loginButton',
 | 
			
		||||
                child: ElevatedButton(
 | 
			
		||||
                  onPressed: controller.isLoading
 | 
			
		||||
                      ? null
 | 
			
		||||
                      : controller.checkHomeserverAction,
 | 
			
		||||
                  child: controller.isLoading
 | 
			
		||||
                      ? const LinearProgressIndicator()
 | 
			
		||||
                      : Text(L10n.of(context)!.connect),
 | 
			
		||||
                ),
 | 
			
		||||
              ),
 | 
			
		||||
            ),
 | 
			
		||||
          ],
 | 
			
		||||
        ),
 | 
			
		||||
      ),
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user