Skip to content

Client IP can not be gotten when using IPv6. And controls can not be centered. #3999

Description

@Hazelmeow

Duplicate Check

Describe the bug

Client IP can not be gotten when using IPv6.

For example, my IPv6 is [2409:8a50:480:1c54:16b1:4637:d98f:5e2a], but it shows 2409.
image
image

By the way.. How can I settle the text on the center of the page..?

Code sample

# ZhiXueFlet
# 作者: wangzm5573.
from __future__ import annotations
print(f"ZhiXueFlet 以 {__name__} 运行.")
from typing import Union, Any, Callable, Final, Literal, Optional, _LiteralGenericAlias, overload, TypeVar, Type, cast, get_args, get_origin, get_type_hints, runtime_checkable, TYPE_CHECKING, Protocol, final, no_type_check, no_type_check_decorator, TypeAlias # type: ignore
from types import GenericAlias
import traceback, sys, logging, time, dataclasses, re, os, datetime, threading, copy, json, base64, random, ctypes, string
import flet
class ZhiXueFlet():
    def __init__(self: ZhiXueFlet, page: flet.Page) -> None:
        self.updateLock = threading.Lock()
        self.page = page
        self.page.title = "IP"
        self.page.padding = 0
        self.page.scroll = flet.ScrollMode.AUTO
        self.page.theme_mode = flet.ThemeMode.SYSTEM
        self.page.theme = flet.Theme(color_scheme_seed = flet.colors.BLUE_100)
        self.page.dark_theme = flet.Theme(color_scheme_seed = flet.colors.BLUE_900)
        self.page.vertical_alignment = flet.MainAxisAlignment.CENTER
        self.page.horizontal_alignment = flet.CrossAxisAlignment.CENTER
        self.__initControl__()
        self.onConnect()
        self.page.on_close = self.onClose
        self.page.on_connect = self.onConnect
        self.page.on_disconnect = self.onDisconnect
        self.page.controls.append(self.format)
        self.update()

    def onConnect(self: ZhiXueFlet, *args, **kwargs) -> None:
        self.connected = True
        print(f"[{time.strftime('%H:%M:%S', time.localtime())}] {self.page.session_id} {self.page.client_ip} 连接网页.")

    def onDisconnect(self: ZhiXueFlet, *args, **kwargs) -> None:
        self.connected = False
        print(f"[{time.strftime('%H:%M:%S', time.localtime())}] {self.page.session_id} {self.page.client_ip} 断开网页.")

    def onClose(self: ZhiXueFlet, *args, **kwargs) -> None:
        print(f"[{time.strftime('%H:%M:%S', time.localtime())}] {self.page.session_id} {self.page.client_ip} 会话关闭.")
        self.page.controls.clear()
        self.page.overlay.clear()

    def update(self: ZhiXueFlet) -> None:
        with self.updateLock:
            self.page.update()

    def __initControl__(self: ZhiXueFlet) -> None:
        self.IPtext = flet.Text(f"Your IP address is: {self.page.client_ip}", size = 24, text_align = flet.TextAlign.CENTER)
        self.format = flet.Row(
            alignment = flet.MainAxisAlignment.CENTER,
            controls = [
                flet.Container(
                    alignment = flet.alignment.center,
                    content = self.IPtext
                ),
            ]
        )

if __name__ == "__main__":
    os.environ["FLET_DISPLAY_URL_PREFIX"] = "Website started at"
    flet.app(target = ZhiXueFlet, port = 5573, view = flet.AppView.WEB_BROWSER, web_renderer = flet.WebRenderer.AUTO)
    input("Press Enter to exit...\n")

To reproduce

  1. Run the script.
  2. Open website [IPv6 address]:5573
  3. Then the bug occured.

Expected behavior

'Your IP address is: {%s}' shows on the center of the page, and the IP is correct.

Screenshots / Videos

No response

Operating System

Windows

Operating system details

Windows 11

Flet version

Name: flet Version: 0.25.0.dev3382 Summary: Flet for Python - easily build interactive multi-platform apps in Python Home-page: https://flet.dev Author: Appveyor Systems Inc. Author-email: hello@flet.dev License: Apache-2.0 Location: C:\Program Files\Python312\Lib\site-packages Requires: cookiecutter, fastapi, flet-runtime, packaging, qrcode, uvicorn, watchdog Required-by:

Regression

I'm not sure / I don't know

Suggestions

No response

Logs

No response

Additional details

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions