Giter Site home page Giter Site logo

guozhigq / flutter_v2ex Goto Github PK

View Code? Open in Web Editor NEW
626.0 11.0 44.0 68.68 MB

使用flutter开发的v2ex客户端,支持Android和iOS设备。在Android 12+机型上支持Material You取色

License: MIT License

Kotlin 0.02% Swift 0.35% Objective-C 0.01% Dart 92.96% CMake 2.50% C++ 2.94% C 0.19% HTML 0.42% Ruby 0.63%
dart flutter android v2ex

flutter_v2ex's Introduction


VVEX


使用 Flutter 开发的 V2ex 客户端

适配了Material You 样式

去下载


功能

开发计划 / 加入讨论组

  • 夜间模式
  • 动态主题
  • 自动签到
  • 高级搜索
  • 节点排序
  • @回复多人
  • 检测更新
  • 2FA验证登录
  • 回复保存为图片
  • 多类型消息提醒
  • 评论倒序查看
  • 快速返回顶部&刷新
  • base64 加密/解密
  • Signin with Google
  • 话题标记已读
  • 消息跳转至楼层
  • 图片上传
  • 数据缓存
  • 页面骨架屏
  • 适配Pad布局
  • markdown 格式发布主题

环境配置

[✓] Flutter (Channel stable, 3.16.4, on macOS 14.1.2 23B92 darwin-arm64, locale
    zh-Hans-CN)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.3)
[✓] VS Code (version 1.85.1)
[✓] Connected device (3 available)
[✓] Network resources

运行

确保相关开发环境及代码编辑器正确配置

  • 终端运行

    • 进入项目根目录
    • 键入 flutter pub get 安装插件
    • 键入 flutter run 编译&运行项目至模拟器
  • 编辑器运行 - Android studio

    • 安装 dart&flutter 相关插件
    • 点击顶部工具栏 绿色按钮(确保 main.dart 显示为 flutter logo)
  • 编辑器运行 - VSCode

    • 安装 dart&flutter 相关插件
    • 打开 lib -> main.dart 文件
    • 确保底部状态栏显示正确的设备,点击顶部工具栏下箭头 -> Start Debugging

打包

执行 flutter build apk/ios

打包前在 lib/http/init.dart 中关闭代理

client.findProxy = (uri) {
    // proxy all request to localhost:8888
    // return 'PROXY 192.168.1.60:7890';
    // return 'PROXY 172.16.32.186:7890';
    // return 'PROXY localhost:7890';
    // return 'PROXY 127.0.0.1:7890';
    // 不设置代理 TODO 打包前关闭代理
    return 'DIRECT';
};

授权@24 版权©️

感谢

  • V2LF : 很多思路借鉴了 V2LF, 感谢 🙏
  • sov2ex : 一个便捷的 V2EX 站内搜索引擎,搜索功能基于此实现,感谢🙏

flutter_v2ex's People

Contributors

guozhigq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flutter_v2ex's Issues

密码框问题

复现流程

  1. 把密码输入框设置为密码可见后,登录错误(如输错密码)
  2. 再次输入密码时,密码框显示的是不显示密码,但是在输入的时候,是显示密码的

自由复制增强

打开帖子,
帖子内容可以复制,但帖子标题不可。
帖子回复内容长按没有配置事件触发,我看您功能已经实现了,可以默认为自由复制,也可以为如图的“more menu”.
Screenshot_20230307-221133_vvex.png

主题节点名称错误

个人主页 最近回复的主题 节点名称均显示为 问与答,进入主题详情也显示正常

样式细节调整

  • 「今日热议」页面底部留白(偶现)
  • reply_item底部border
  • 部分页面骨架屏
  • 主题详情页 年月日日期间距
  • appBar隐藏时,点击回复键盘弹层样式 (pad布局导致)

无法领取奖励

每次点击用户页面的“领取奖励”时弹出一个 toast 说“你的浏览器有一些奇奇怪怪的设置,请用一个干净安装的浏览器重试一下”然后无法领取奖励。
目前系统默认浏览器是 Firefox,也尝试过更换到 Edge 但没有明显变化。

设备信息:

{product: BKL-AL20, supportedAbis: [arm64-v8a, armeabi-v7a, armeabi], serialNumber: unknown, displayMetrics: {xDpi: 403.4110107421875, widthPx: 1080.0, heightPx: 2160.0, yDpi: 403.4110107421875}, supported32BitAbis: [armeabi-v7a, armeabi], display: BKL-AL20 10.0.0.179(C00E179R2P4), type: user, isPhysicalDevice: true, version: {baseOS: , securityPatch: 2020-07-01, sdkInt: 29, release: 10, codename: REL, previewSdkInt: 0, incremental: 10.0.0.179C00}, systemFeatures: [android.hardware.sensor.proximity, android.hardware.sensor.accelerometer, android.hardware.faketouch, android.hardware.usb.accessory, android.software.backup, android.hardware.touchscreen, android.hardware.touchscreen.multitouch, android.software.print, android.hardware.consumerir, com.huawei.software.features.full, android.software.activities_on_secondary_displays, android.software.voice_recognizers, android.software.picture_in_picture, android.hardware.fingerprint, android.hardware.sensor.gyroscope, android.software.cant_save_state, android.hardware.opengles.aep, android.hardware.bluetooth, android.hardware.camera.autofocus, android.hardware.telephony.gsm, android.hardware.telephony.ims, android.hardware.usb.host, android.hardware.audio.output, com.google.android.feature.services_updater, android.software.verified_boot, android.hardware.camera.flash, android.hardware.camera.front, android.hardware.screen.portrait, android.hardware.nfc, cn.google.services, android.software.home_screen, com.huawei.system.feature, android.hardware.microphone, android.software.autofill, android.software.securely_removes_users, android.hardware.bluetooth_le, android.hardware.sensor.compass, android.hardware.touchscreen.multitouch.jazzhand, android.software.app_widgets, android.software.input_methods, android.hardware.sensor.light, android.hardware.vulkan.version, android.software.companion_device_setup, android.software.device_admin, android.hardware.camera, android.hardware.screen.landscape, android.hardware.ram.normal, android.software.managed_users, android.software.webview, android.hardware.sensor.stepcounter, android.hardware.camera.capability.manual_post_processing, android.hardware.camera.any, android.hardware.camera.capability.raw, android.hardware.vulkan.compute, com.huawei.software.features.china, android.software.connectionservice, android.hardware.touchscreen.multitouch.distinct, android.hardware.location.network, android.software.cts, android.hardware.wifi.direct, android.software.live_wallpaper, android.software.ipsec_tunnels, android.software.freeform_window_management, android.hardware.nfc.hcef, android.hardware.nfc.uicc, android.hardware.location.gps, android.sofware.nfc.beam, android.software.midi, android.hardware.nfc.any, android.hardware.nfc.hce, android.hardware.wifi, android.hardware.location, android.hardware.vulkan.level, android.software.secure_lock_screen, android.hardware.telephony, android.software.file_based_encryption], manufacturer: HUAWEI, tags: release-keys, supported64BitAbis: [arm64-v8a], bootloader: unknown, fingerprint: HONOR/BKL-AL20/HWBKL:10/HUAWEIBKL-AL20/10.0.0.179C00:user/release-keys, host: cn-west-3b-28f81ae491595390406091-865c478c76-qpxxc, model: BKL-AL20, id: HUAWEIBKL-AL20, brand: HONOR, device: HWBKL, board: BKL, hardware: kirin970}

[新功能需求] 添加返回顶部按钮及刷新功能

帖子内容不会自动刷新,返回顶部刷新太麻烦。

在回复按钮上悬浮“向上⏫”按钮,返回顶部
到达顶部后“向上⏫”按钮变为“刷新”按钮。

当然,有更好的交互逻辑,欢迎大家探讨。

使用 iOS 真机安装后一直闪退

代码拉下来后,可以跑,连着手机线可以安装到 真机 iPhone 上面,但是拔掉线之后,再进入 App 就一直闪退。

证书用了公司的开发证书。

请问我应该怎么处理?

相册样式建议

相册打开方式调用 Android13+的图片选择器 或者 是saf文件框架,你这界面就有点:满满的微信相册即视感……
SAF文件框架:很好看,而且满满的md3
Collage_20230522_084222.jpg
图片选择器:这玩意儿比saf选择图片难用一点,但是界面好看多了
IMG_20230522_084843_976.jpg

用户信息加载错误

复现路径 用户主页 - 查看任意主题 - 查看任意用户信息 均加载的当前用户信息

节点排序首页tabview未刷新

  • 初始化tabs
  • 初始化tabConroller
tabs.clear();
tabs.addAll(customTabs);
_tabController = TabController(length: tabs.length, vsync: this);
setState();

方案B

return DefaultTabController(
  length: tabs.length,
  ...,
  button(
    onPress() {
        DefaultTabController.of(context).animateTo(0);
    }
 )
);

注: DefaultTabController.of(context).animateTo(0) 写在build外不生效

点击链接后卡死

复现步骤:
随意点击文章中一个链接,然后页面就卡死了,不能活动,按系统返回键无响应,只能按标题栏返回按钮关闭页面
应用版本:v1.2.4
系统信息:
一加9pro
Android 13
Color OS 13.0

网络错误

网页能打开,v2er 也能打开,但是 vvex 是网络错误,代理开的是全局

无法登录

在浏览器是可以打开网页的,app就一直提示没网络
Screenshot_20230406_012021_com.guozhigq.vvex.jpg

Screenshot_20230406_012026_com.guozhigq.vvex.jpg

Screenshot_20230406_012039_com.kiwibrowser.browser.dev.jpg

搜索功能用不了

显示网络异常 请稍后重试,版本1.2.4,手机环境鸿蒙2.0.0.210(安卓10),代理工作正常,浏览其他内容没问题,麻烦大佬有空的话帮忙看看,谢谢啦~

平滑滚动动画时间太长

动画时长过长,和其他原生app差异很大,而且列表必须要等动画结束或手动暂停才能点击帖子

挂了梯子也网络错误?

{product: darwin, supportedAbis: [arm64-v8a, armeabi-v7a, armeabi], serialNumber: unknown, displayMetrics: {xDpi: 391.885009765625, widthPx: 1080.0, heightPx: 2340.0, yDpi: 475.4880065917969}, supported32BitAbis: [armeabi-v7a, armeabi], display: RKQ1.201217.002 dev-keys, type: user, isPhysicalDevice: true, version: {baseOS: , securityPatch: 2022-06-10, sdkInt: 30, release: 11, codename: REL, previewSdkInt: 0, incremental: 1}, systemFeatures: [android.hardware.sensor.proximity, android.software.adoptable_storage, android.hardware.sensor.accelerometer, android.software.controls, android.hardware.faketouch, android.hardware.usb.accessory, android.hardware.telephony.cdma, android.software.backup, android.hardware.touchscreen, android.hardware.touchscreen.multitouch, android.software.print, android.software.activities_on_secondary_displays, android.hardware.wifi.rtt, android.software.voice_recognizers, android.software.picture_in_picture, android.hardware.fingerprint, android.hardware.sensor.gyroscope, android.hardware.audio.low_latency, android.software.vulkan.deqp.level, android.software.cant_save_state, android.hardware.opengles.aep, android.hardware.sensor.relative_humidity, android.hardware.bluetooth, android.hardware.camera.autofocus, android.hardware.telephony.gsm, android.hardware.telephony.ims, android.software.sip.voip, android.hardware.usb.host, android.hardware.audio.output, android.software.verified_boot, android.hardware.camera.flash, android.hardware.camera.front, android.hardware.sensor.hifi_sensors, android.hardware.screen.portrait, android.hardware.nfc, android.hardware.sensor.ambient_temperature, com.nxp.mifare, android.hardware.sensor.stepdetector, android.software.home_screen, android.hardware.microphone, android.software.autofill, android.software.securely_removes_users, android.hardware.bluetooth_le, android.hardware.sensor.compass, android.hardware.touchscreen.multitouch.jazzhand, android.hardware.sensor.barometer, android.software.app_widgets, android.software.input_methods, android.hardware.sensor.light, android.hardware.vulkan.version, android.software.companion_device_setup, android.software.device_admin, android.hardware.wifi.passpoint, android.hardware.camera, android.hardware.screen.landscape, android.software.device_id_attestation, android.hardware.ram.normal, android.software.managed_users, android.software.webview, android.hardware.sensor.stepcounter, android.hardware.camera.capability.manual_post_processing, android.hardware.camera.any, android.hardware.camera.capability.raw, android.hardware.vulkan.compute, android.software.connectionservice, android.hardware.touchscreen.multitouch.distinct, android.hardware.location.network, android.software.cts, android.software.sip, android.hardware.camera.capability.manual_sensor, android.software.app_enumeration, android.hardware.camera.level.full, android.hardware.wifi.direct, android.software.live_wallpaper, android.software.ipsec_tunnels, android.hardware.audio.pro, android.hardware.nfc.hcef, android.hardware.nfc.uicc, android.hardware.location.gps, android.software.midi, android.hardware.nfc.any, android.hardware.nfc.ese, android.hardware.nfc.hce, android.hardware.wifi, android.hardware.location, android.hardware.vulkan.level, android.hardware.wifi.aware, android.software.secure_lock_screen, android.hardware.telephony, android.software.file_based_encryption], manufacturer: deltainno, tags: dev-keys, supported64BitAbis: [arm64-v8a], bootloader: unknown, fingerprint: SMARTISAN/aries/aries:11/RKQ1.201217.002/1658136626:user/dev-keys, host: build16, model: DT2002C, id: RKQ1.201217.002, brand: SMARTISAN, device: darwin, board: kona, hardware: qcom}

ios下载地址

你好,v2ex上别人推荐来的,请问ios怎么下载

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.